"""
配置文件
"""
import os.path
import logging.config

# 项目文件
BASE_DIR = os.path.dirname(
    os.path.dirname(__file__)
)
# 用户数据文件夹
USER_DIR = os.path.join(
    BASE_DIR, r'db\user_data'
)

# 货物数据文件夹
GOODS_DB_FILE = os.path.join(
    BASE_DIR, r'db\goods_data\goods.json'
)

# 日志文件
logfile_path = os.path.join(
    BASE_DIR, r'log\log1.log'
)

standard_format = '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]' \
                  '[%(levelname)s][%(message)s]'  # 其中name为getlogger指定的名字

simple_format = '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s'

test_format = '%(asctime)s] %(message)s'

# log配置字典
LOGGING_DIC = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'standard': {
            'format': standard_format
        },
        'simple': {
            'format': simple_format
        },
        'test': {
            'format': test_format
        },
    },
    'filters': {},  # 过滤日志
    'handlers': {
        # 打印到终端的日志
        'console': {
            'level': 'WARNING',
            'class': 'logging.StreamHandler',  # 打印到屏幕
            'formatter': 'simple'
        },
        # 打印到文件的日志,收集info及以上的日志
        'default': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件
            'formatter': 'standard',
            'filename': logfile_path,  # 日志文件
            'maxBytes': 1024 * 1024 * 5,  # 日志大小 5M
            'backupCount': 5,
            'encoding': 'utf-8',  # 日志文件的编码，再也不用担心中文log乱码了
        },
    },
    'loggers': {
        # logging.getLogger(__name__)拿到的logger配置  空字符串作为键 能够兼容所有的日志
        '': {
            'handlers': ['default', 'console'],  # 这里把上面定义的两个handler都加上，即log数据既写入文件又打印到屏幕
            'level': 'DEBUG',
            'propagate': True,  # 向上（更高level的logger）传递
        },  # 当键不存在的情况下 (key设为空字符串)默认都会使用该k:v配置
    },
}

# 使用配置字典
logging.config.dictConfig(LOGGING_DIC)  # 自动加载字典中的配置

if __name__ == '__main__':
    print("BASE_DIR ", BASE_DIR)
    print("USER_DIR ", USER_DIR)
    print("GOODS_DB_FILE ", GOODS_DB_FILE)
    print(logging)
